#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main() 
{
    printf("=== Testing fork with buffers ===\n");
    
    // C库函数（有缓冲区）
    printf("hello printf\n");
    fprintf(stdout, "hello fprintf\n");
    fwrite("hello fwrite\n", 1, 13, stdout);
    
    // 系统调用（无缓冲区）  
    write(1, "hello write(syscall)\n", 21);
    
    // 创建子进程
    pid_t pid = fork();
    if (pid == 0) 
    {
        printf("Child process exiting\n");
    }
    else 
    {
        printf("Parent process exiting\n");
    }
    
    return 0;
}

//int main()
//{
//    printf("hello xiaodu! hello world!");
//    sleep(5);
//    return 0;
//}



//int main()
//{
//    // 测试行缓冲（终端设备）
//    printf("Line 1 without newline");  // 不会立即显示
//    sleep(2);
//    printf(" -> Line 1 continued\n");  // 遇到换行符，立即显示
//    
//    // 测试全缓冲（文件重定向时）
//    fprintf(stdout, "This may be buffered");
//    sleep(2); 
//    fprintf(stdout, " until newline or flush\n");
//    
//    // 测试无缓冲（stderr）
//    fprintf(stderr, "Error: immediate output");
//    sleep(2);
//    fprintf(stderr, " without buffering\n");
//    
//    // 手动刷新缓冲区
//    printf("This waits for flush");
//    fflush(stdout);  // 强制刷新
//    sleep(2);
//    printf(" - now continued\n");
//    
//    return 0;
//}
